package com.gang.mars.basic.generictype.demo2;

import java.util.ArrayList;
import java.util.Random;

/**
 * 泛型类
 * @author gang.chen
 * @since  2021/7/13 12:19
 */
public class Apple04<T> {
    static Random random = new Random();

    //成员方法
    public T getAppleT(){
        return null;
    }

    /**
     * 泛型方法
     * @param arrayList 参数
     * @param <E> 泛型标识，具体类型，由调用方法来指定
     *           强调，泛型方法中的泛型与泛型类中的泛型是独立的
     * */
    public <E> E getAppleE(ArrayList<E> arrayList){

        return arrayList.get(random.nextInt(arrayList.size()));
    }

    /**
     * 1) 任意类可定义泛型方法
     * 2) 泛型方法定义如下
     * @param <C> 任意型参类型
     * @param <R> 接口型参类型
     * */
    public <C,R> R scan(C c, Apple05<C,R> apple05){

        return apple05.getResult1(c);
    }
}
